/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package persistencia.agente;

import entidades.ProductoImpl;
import java.util.List;
import persistencia.Agente;
import persistencia.Criterio;
import persistencia.FabricaCriterio;
import persistencia.FachadaInterna;
import persistencia.FachadaPersistencia;


/**
 *
 * @author Leandro
 */
public class ProductoAgente extends Agente implements Producto {

    private ProductoImpl producto;
    
    private boolean matHistoricosPrecios;

    @Override
    public String getMarca() {
        return getProducto().getMarca();
    }

    @Override
    public void setMarca(String marca) {
        getProducto().setMarca(marca);
    }

    @Override
    public int getCodProducto() {
        return getProducto().getCodProducto();
    }

    @Override
    public void setCodProducto(int codProducto) {
        getProducto().setCodProducto(codProducto);
    }

    @Override
    public String getNombreProducto() {
        return getProducto().getNombreProducto();
    }

    @Override
    public void setNombreProducto(String nombreProducto) {
        getProducto().setNombreProducto(nombreProducto);
    }

    @Override
    public String getDescripcionProducto() {
        return getProducto().getDescripcionProducto();
    }

    @Override
    public void setDescripcionProducto(String descripcionProducto) {
        getProducto().setDescripcionProducto(descripcionProducto);
    }

    @Override
    public List<HistoricoPrecio> getHistoricosPrecio() {
        Criterio criterio;
        if(!matHistoricosPrecios){
            criterio = FabricaCriterio.getInstancia().obtenerCriterio("oidProducto", Criterio.OperadorRelacionalEnum.Igual.getString(), getOid(), true);
            producto.setHistoricosPrecio(FachadaPersistencia.getInstancia().buscar(HistoricoPrecio.class, criterio));
            matHistoricosPrecios = true;
        }
        return producto.getHistoricosPrecio();
    }

    @Override
    public void setHistoricosPrecio(List<HistoricoPrecio> historicosPrecio) {
        getProducto().setHistoricosPrecio(historicosPrecio);
    }
    
    
    @Override
    public boolean isBloqueado() {
        return getProducto().isBloqueado();
    }

    /**
     * @param bloqueado the bloqueado to set
     */
    @Override
    public void setBloqueado(boolean bloqueado) {
        this.getProducto().setBloqueado(bloqueado);
    }

    /**
     * @return the cantDisponible
     */
    @Override
    public int getCantDisponible() {
        return getProducto().getCantDisponible();
    }

    /**
     * @param cantDisponible the cantDisponible to set
     */
    @Override
    public void setCantDisponible(int cantDisponible) {
        getProducto().setCantDisponible(cantDisponible);
    }

    /**
     * @return the producto
     */
    public ProductoImpl getProducto() {
        return producto;
    }

    /**
     * @param producto the producto to set
     */
    public void setProducto(ProductoImpl producto) {
        this.producto = producto;
    }
    
    

}
